Skip to content

Conversation

@alfetopito
Copy link
Collaborator

@alfetopito alfetopito commented Nov 14, 2025

Summary by CodeRabbit

  • Chores
    • Updated Spanish and Russian localization files and project metadata.
    • Cleared or reset many translation entries to empty placeholders for re-population.
    • Added new translation keys for notification UI as empty placeholders.
    • Adjusted localization metadata and file mappings to align with the updated project structure.

@vercel
Copy link

vercel bot commented Nov 14, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Updated (UTC)
cowfi Building Building Preview Nov 14, 2025 4:42pm
explorer-dev Ready Ready Preview Nov 14, 2025 4:42pm
swap-dev Ready Ready Preview Nov 14, 2025 4:42pm
widget-configurator Ready Ready Preview Nov 14, 2025 4:42pm
2 Skipped Deployments
Project Deployment Preview Updated (UTC)
cosmos Ignored Ignored Nov 14, 2025 4:42pm
sdk-tools Ignored Ignored Preview Nov 14, 2025 4:42pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 14, 2025

Walkthrough

The PR updates two CowSwap frontend localization files: Spanish (es-ES.po) with many translations cleared or blanked, and Russian (ru-RU.po) with translation edits plus updated Crowdin/project metadata. No functional code changes.

Changes

Cohort / File(s) Change Summary
Localization — Spanish
apps/cowswap-frontend/src/locales/es-ES.po
Many msgstr entries cleared or set to empty; several new keys added with empty translations. No code/API changes.
Localization — Russian + Metadata
apps/cowswap-frontend/src/locales/ru-RU.po
Header metadata updated (Project-Id-Version, PO-Revision-Date, X-Crowdin-Project/ID, X-Crowdin-File/ID/path); numerous msgstr edits and some emptied translations; new notification-related keys added. No runtime logic changes.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Verify mass clearing in apps/cowswap-frontend/src/locales/es-ES.po was intentional and not a tooling error.
  • Confirm Crowdin/project IDs, file IDs, and PO-Revision-Date in apps/cowswap-frontend/src/locales/ru-RU.po are correct.
  • Spot-check several translated keys (including new notification keys) for accidental loss.

Poem

🐇 I nibble lines in morning light,
Empty strings take their quiet flight.
Crowdin stamps and keys anew,
Translations wait for voices true.
A rabbit hops to see it through. 🥕

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request description is empty, but the author did not provide any description content despite the template requiring a summary and testing information. Add a pull request description following the template with a high-level summary of the Crowdin localization updates and any relevant testing steps or background information.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'New Crowdin updates' accurately reflects the main change: localization updates from Crowdin affecting es-ES.po and ru-RU.po files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch i18n_develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Nitpick comments (1)
apps/cowswap-frontend/src/locales/ru-RU.po (1)

2452-2457: “TWAP” acronym fallback is reasonable but could be clarified

Falling back to the English “TWAP” is consistent with DeFi jargon; if Russian users are less familiar with the term, you might later consider a tooltip or glossary rather than localizing the label itself.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bec1e54 and c674fb7.

📒 Files selected for processing (2)
  • apps/cowswap-frontend/src/locales/es-ES.po (28 hunks)
  • apps/cowswap-frontend/src/locales/ru-RU.po (6 hunks)
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2025-07-24T16:42:53.154Z
Learnt from: cowdan
Repo: cowprotocol/cowswap PR: 6009
File: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx:23-33
Timestamp: 2025-07-24T16:42:53.154Z
Learning: In apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx, the use of toFixed(2) for percentage formatting in tooltip content is intentional and differs from the banner message formatting that uses toSignificant(2, undefined, Rounding.ROUND_DOWN). This formatting difference serves different UX purposes and should not be flagged as inconsistent.

Applied to files:

  • apps/cowswap-frontend/src/locales/es-ES.po
  • apps/cowswap-frontend/src/locales/ru-RU.po
📚 Learning: 2025-07-24T16:43:47.639Z
Learnt from: cowdan
Repo: cowprotocol/cowswap PR: 6009
File: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/highFeeWarningHelpers.ts:18-20
Timestamp: 2025-07-24T16:43:47.639Z
Learning: In apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/highFeeWarningHelpers.ts, the formatFeePercentage function uses ROUND_DOWN with toSignificant(2) for "at least X%" messaging. This ensures the displayed percentage is never higher than the actual fee, making the "at least" phrasing accurate. For example, if the actual fee is 25.4%, displaying "at least 25%" is correct, but "at least 26%" would be misleading.

Applied to files:

  • apps/cowswap-frontend/src/locales/es-ES.po
📚 Learning: 2025-10-10T20:28:16.565Z
Learnt from: fairlighteth
Repo: cowprotocol/cowswap PR: 6347
File: apps/cowswap-frontend/src/modules/trade/pure/TradeConfirmation/index.tsx:49-49
Timestamp: 2025-10-10T20:28:16.565Z
Learning: In apps/cowswap-frontend/src/modules/trade, TradeConfirmation follows a two-layer architecture: TradeConfirmationView (pure/stateless) in pure/TradeConfirmation/index.tsx renders the UI, while TradeConfirmation (container) in containers/TradeConfirmation/index.tsx wraps it to freeze props during pending trades (via useStableTradeConfirmationProps), wire in signing state (useSigningStep), and inject trade confirmation state (useTradeConfirmState). Consuming modules should import the container TradeConfirmation from 'modules/trade' to preserve this stateful behavior.
<!-- [add_learning]
When reviewing component refactoring in apps/cowswap-frontend/src/modules/trade, recognize the pattern where a pure view component (e.g., TradeConfirmationView) is separated from a stateful container (e.g., TradeConfirmation) that wraps it. The container adds runtime state management (prop stabilization, signing state, etc.) while the view remains testable and composable. Do not flag usages that import th...

Applied to files:

  • apps/cowswap-frontend/src/locales/es-ES.po
📚 Learning: 2025-10-13T19:41:31.440Z
Learnt from: limitofzero
Repo: cowprotocol/cowswap PR: 6351
File: apps/cowswap-frontend/src/modules/erc20Approve/containers/TradeApproveModal/useTradeApproveCallback.ts:87-121
Timestamp: 2025-10-13T19:41:31.440Z
Learning: In apps/cowswap-frontend/src/modules/erc20Approve, useApproveCallback returns Promise<TransactionResponse | undefined> and is distinct from useApproveCurrency, which can return Promise<TransactionReceipt | SafeMultisigTransactionResponse>. When reviewing approval flows, verify which hook is actually being used before flagging Safe wallet concerns.

Applied to files:

  • apps/cowswap-frontend/src/locales/es-ES.po
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Cypress
  • GitHub Check: Setup
🔇 Additional comments (7)
apps/cowswap-frontend/src/locales/es-ES.po (2)

9-19: Header metadata updates look fine.

Project/version/Crowdin fields and revision date updated as expected.


1-1: Confirmed: 28 empty translations found, including critical acronyms (APR, TVL, N/A).

The verification script identified 28 empty msgstr entries in the Spanish locale file, with 11 being critical or short identifiers (APR, TVL, N/A, "gas", and single-character entries). These should be addressed before merge to ensure proper Spanish localization.

apps/cowswap-frontend/src/locales/ru-RU.po (5)

9-19: Header metadata update looks consistent

Project ID, file ID, and revision date align with a Crowdin reconfiguration and don’t affect runtime behavior. No issues from a frontend perspective.


900-903: Empty msgstr for “APR” is acceptable

Clearing the translation will fall back to the English msgid “APR”, which is standard and likely what you want here.


1257-1260: “CoW AMM” left untranslated to fall back to brand name

Using an empty msgstr so the UI shows the exact brand term “CoW AMM” is sensible and avoids awkward localization.


1313-1315: “Bungee” brand name fallback

Same pattern here: empty msgstr will display the brand “Bungee” verbatim, which is appropriate for a product name.


1631-1633: “TVL” acronym fallback

Letting “TVL” display from the msgid is fine and keeps the commonly used DeFi acronym intact.

Comment on lines 556 to 559
#: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
msgid "h"
msgstr "h"
msgstr ""

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Blocker: time-unit abbreviations were cleared, causing blank durations in UI.

Restore minimal, non-ambiguous abbreviations.

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "h"
-msgstr ""
+msgstr "h"

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "s"
-msgstr ""
+msgstr "s"

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "d"
-msgstr ""
+msgstr "d"

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "m"
-msgstr ""
+msgstr "m"

Also applies to: 1244-1247, 1890-1893, 4404-4407

🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 556-559 (and also at
1244-1247, 1890-1893, 4404-4407), the msgstr for time-unit abbreviations were
cleared causing blank durations in the UI; restore minimal, non-ambiguous
Spanish abbreviations by setting the msgstrs to appropriate short forms (for
example: hours -> "h", minutes -> "min", seconds -> "s", days -> "d") matching
each msgid so the UI shows the correct abbreviated units.

Comment on lines 900 to 905
#: apps/cowswap-frontend/src/modules/tokensList/containers/LpTokenPage/index.tsx
msgid "APR"
msgstr "APR"
msgstr ""

#: apps/cowswap-frontend/src/common/pure/NetworksList/index.tsx
msgid "CoW Protocol Explorer"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

High‑impact labels/acronyms emptied; avoid blank chips/badges.

Passthrough acronyms/brands; localize where stable.

 #: apps/cowswap-frontend/src/modules/tokensList/containers/LpTokenPage/index.tsx
 msgid "APR"
-msgstr ""
+msgstr "APR"

 #: apps/cowswap-frontend/src/modules/tokensList/containers/LpTokenPage/index.tsx
 msgid "TVL"
-msgstr ""
+msgstr "TVL"

 #: apps/cowswap-frontend/src/modules/wallet/pure/StatusIcon/index.tsx
 msgid "WalletConnect"
-msgstr ""
+msgstr "WalletConnect"

 #: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/TransactionSlippageInput/index.tsx
 msgid "Auto"
-msgstr ""
+msgstr "Auto"

 #: apps/cowswap-frontend/src/modules/hooksStore/pure/HookDappDetails/index.tsx
 msgid "N/A"
-msgstr ""
+msgstr "N/D"

 #: apps/cowswap-frontend/src/common/constants/routes.ts
 msgid "gas"
-msgstr ""
+msgstr "gas"

 #: apps/cowswap-frontend/src/common/pure/CoWAmmBannerContent/index.tsx
 msgid "pool"
-msgstr ""
+msgstr "pool"

 #: apps/cowswap-frontend/src/modules/swap/containers/SwapConfirmModal/index.tsx
 msgid "token"
-msgstr ""
+msgstr "token"

 #: apps/cowswap-frontend/src/legacy/components/Tokens/TokensTable.tsx
 msgid "Token"
-msgstr ""
+msgstr "Token"

Also applies to: 1631-1634, 1748-1750, 2808-2811, 4280-4283, 2693-2696, 6125-6127, 294-298, 3054-3057

🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 900-905, the msgstr
entries for acronyms/brand labels (e.g., "APR" and "CoW Protocol Explorer") are
empty; update the msgstr to be the same as the msgid (passthrough) so
chips/badges don't render blank (e.g., set msgstr "APR" and msgstr "CoW Protocol
Explorer"); apply the same fix to the other reported ranges (1631-1634,
1748-1750, 2808-2811, 4280-4283, 2693-2696, 6125-6127, 294-298, 3054-3057) by
ensuring acronyms/brand msgstr values mirror their msgid instead of being empty.

Comment on lines 1258 to 1261
#: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
msgid "CoW AMM"
msgstr "CoW AMM"
msgstr ""

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Core navigation/feature labels cleared; re-add to prevent empty menus and sections.

Keep brands/acronyms; translate stable terms.

 #: apps/cowswap-frontend/src/common/containers/CoWAmmBanner/index.tsx
 msgid "CoW AMM"
-msgstr ""
+msgstr "CoW AMM"

 #: libs/common-const/src/common.ts
 msgid "TWAP"
-msgstr ""
+msgstr "TWAP"

 #: apps/cowswap-frontend/src/common/constants/routes.ts
 msgid "Yield"
-msgstr ""
+msgstr "Rendimiento"

 #: apps/cowswap-frontend/src/common/containers/OrderHooksDetails/index.tsx
 msgid "Pre Hooks"
-msgstr ""
+msgstr "Pre Hooks"

 #: apps/cowswap-frontend/src/common/containers/OrderHooksDetails/index.tsx
 msgid "POST"
-msgstr ""
+msgstr "POST"

 #: apps/cowswap-frontend/src/common/containers/OrderHooksDetails/index.tsx
 msgid "PRE"
-msgstr ""
+msgstr "PRE"

 #: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
 msgid "Legal"
-msgstr ""
+msgstr "Legal"

 #: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
 msgid "FAQs"
-msgstr ""
+msgstr "Preguntas frecuentes"

 #: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
 msgid "Tokens"
-msgstr ""
+msgstr "Tokens"

Also applies to: 2453-2458, 3310-3315, 716-719, 1270-1273, 3850-3853, 5698-5700, 3752-3755, 814-819

🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 1258-1261 (and also
update the empty entries at 2453-2458, 3310-3315, 716-719, 1270-1273, 3850-3853,
5698-5700, 3752-3755, 814-819), restore non-empty msgstr values so core
navigation/feature labels are not blank; for brand names/acronyms like "CoW AMM"
keep the original text (msgstr "CoW AMM") and for any stable/common terms
provide the appropriate Spanish translation while preserving brand
capitalization and acronyms.

Comment on lines 1314 to 1316
msgid "Bungee"
msgstr "Bungee"
msgstr ""

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Brand/feature names should not be empty.

Preserve brand; provide clear Spanish for feature.

 #: libs/hook-dapp-lib/src/hookDappsRegistry.ts
 msgid "Bungee"
-msgstr ""
+msgstr "Bungee"

 #: libs/hook-dapp-lib/src/hookDappsRegistry.ts
 msgid "Aave Collateral Swap Flashloan"
-msgstr ""
+msgstr "Flashloan de intercambio de garantía de Aave"

Also applies to: 4979-4981

🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 1314-1316 (and
similarly at 4979-4981) the msgstr for the brand/feature "Bungee" is empty;
populate msgstr with the preserved brand name (e.g., "Bungee") or "Bungee" plus
a brief Spanish descriptor if context requires (e.g., "Bungee
(servicio/función)"), ensuring the brand text is not translated away and the
Spanish string provides clear context.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8d591e7 and 13833f0.

📒 Files selected for processing (2)
  • apps/cowswap-frontend/src/locales/es-ES.po (34 hunks)
  • apps/cowswap-frontend/src/locales/ru-RU.po (15 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/cowswap-frontend/src/locales/es-ES.po
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: shoom3301
Repo: cowprotocol/cowswap PR: 5443
File: apps/cowswap-frontend/src/modules/swap/containers/ConfirmSwapModalSetup/index.tsx:71-71
Timestamp: 2025-02-20T15:59:33.749Z
Learning: The swap module in apps/cowswap-frontend/src/modules/swap/ is marked for deletion in PR #5444 as part of the swap widget unification effort.
📚 Learning: 2025-07-24T16:42:53.154Z
Learnt from: cowdan
Repo: cowprotocol/cowswap PR: 6009
File: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx:23-33
Timestamp: 2025-07-24T16:42:53.154Z
Learning: In apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx, the use of toFixed(2) for percentage formatting in tooltip content is intentional and differs from the banner message formatting that uses toSignificant(2, undefined, Rounding.ROUND_DOWN). This formatting difference serves different UX purposes and should not be flagged as inconsistent.

Applied to files:

  • apps/cowswap-frontend/src/locales/ru-RU.po
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Cypress
  • GitHub Check: Setup
🔇 Additional comments (1)
apps/cowswap-frontend/src/locales/ru-RU.po (1)

9-19: Crowdin metadata updates look correct.

Project/file IDs and paths reflect the new Crowdin setup and develop path. No action needed.

Comment on lines 649 to 651
msgid "Scheduled"
msgstr "Запланированный"
msgstr "Запланирован"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Use neutral form for the standalone status “Scheduled”.

“Запланирован” is gendered; prefer neutral “Запланировано” for status labels.

 msgid "Scheduled"
-msgstr "Запланирован"
+msgstr "Запланировано"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
msgid "Scheduled"
msgstr "Запланированный"
msgstr "Запланирован"
msgid "Scheduled"
msgstr "Запланировано"
🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/ru-RU.po around lines 649-651, the Russian
translation for the standalone status "Scheduled" uses a gendered form
"Запланирован"; replace it with the neutral, status-appropriate form
"Запланировано" so the label is gender-neutral and appropriate for UI status
contexts.

Comment on lines 900 to 903
#: apps/cowswap-frontend/src/modules/tokensList/containers/LpTokenPage/index.tsx
msgid "APR"
msgstr "APR"
msgstr ""

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fill short headers/acronyms to avoid mixed-language UI.

Keep common DeFi acronyms and brand names concise.

 msgid "APR"
-msgstr ""
+msgstr "APR"
 msgid "CoW AMM"
-msgstr ""
+msgstr "CoW AMM"
 msgid "Bungee"
-msgstr ""
+msgstr "Bungee"
 msgid "TVL"
-msgstr ""
+msgstr "TVL"
 msgid "TWAP"
-msgstr ""
+msgstr "TWAP"

Also applies to: 1261-1265, 1318-1320, 1635-1638, 2464-2470

Comment on lines +908 to 912
#: apps/cowswap-frontend/src/modules/notifications/pure/NotificationSettingsPopover.tsx
msgid "Got it"
msgstr ""

#: apps/cowswap-frontend/src/common/pure/CoWAmmBannerContent/index.tsx
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fill new NotificationSettingsPopover strings to avoid English fallback.

Provide concise RU equivalents.

 #: apps/cowswap-frontend/src/modules/notifications/pure/NotificationSettingsPopover.tsx
 msgid "Got it"
-msgstr ""
+msgstr "Понятно"
 msgid "Trade alerts enabled"
-msgstr ""
+msgstr "Оповещения о сделках включены"
 msgid "Trade alert settings info"
-msgstr ""
+msgstr "Информация о настройках оповещений о сделках"
 msgid "Change trade alert settings here"
-msgstr ""
+msgstr "Измените настройки оповещений о сделках здесь"

Also applies to: 2704-2707, 3411-3414, 3425-3428

🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/ru-RU.po around lines 908-912 (also apply
same change at 2704-2707, 3411-3414, 3425-3428): the new
NotificationSettingsPopover strings are untranslated causing English fallback;
add concise Russian translations for the msgid "Got it" and any other missing
msgid entries referenced (use appropriate Russian UI phrasing like "Понятно" or
"Принято" for "Got it"), update the corresponding msgstr fields with these RU
equivalents, and ensure pluralization/quotation formatting matches the PO file
style.

Comment on lines +1699 to +1702
#: apps/cowswap-frontend/src/legacy/components/Header/AccountElement/NotificationAlertPopover.tsx
msgid "Enable order alerts"
msgstr ""

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Localize new alert opt-in copy in AccountElement popover.

Add clear RU to keep the UI consistent.

 #: .../NotificationAlertPopover.tsx
 msgid "Enable order alerts"
-msgstr ""
+msgstr "Включить оповещения об ордерах"
 msgid "Enable trade alerts"
-msgstr ""
+msgstr "Включить оповещения о сделках"
 msgid "Not now"
-msgstr ""
+msgstr "Не сейчас"
 msgid "When orders fill or expire"
-msgstr ""
+msgstr "Когда ордера исполняются или истекают"
 msgid "Get trade alerts"
-msgstr ""
+msgstr "Получать оповещения о сделках"

Also applies to: 2130-2133, 2642-2645, 3551-3553, 5011-5013

🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/ru-RU.po around lines 1699-1702 (and also
at 2130-2133, 2642-2645, 3551-3553, 5011-5013), the msgid "Enable order alerts"
is missing a Russian translation; update each msgstr to a concise RU translation
such as "Включить уведомления о заказах" (or "Включить оповещения о заказах" if
preferred) so the UI shows the localized text consistently in all listed
locations.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (4)
apps/cowswap-frontend/src/locales/es-ES.po (4)

1249-1251: Blocker: time-unit abbreviations empty → blank durations in UI.

Restore minimal abbreviations.

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "s"
-msgstr ""
+msgstr "s"

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "d"
-msgstr ""
+msgstr "d"

 #: apps/cowswap-frontend/src/modules/twap/utils/deadlinePartsDisplay.ts
 msgid "m"
-msgstr ""
+msgstr "m"

Also applies to: 1899-1901, 4437-4439


900-903: High‑impact: acronyms/brands cleared; chips/badges render blank.

Pass through acronyms/brands; localize only where stable (N/A → N/D).

 #: apps/cowswap-frontend/src/modules/tokensList/containers/LpTokenPage/index.tsx
 msgid "APR"
-msgstr ""
+msgstr "APR"

 #: apps/cowswap-frontend/src/modules/tokensList/containers/LpTokenPage/index.tsx
 msgid "TVL"
-msgstr ""
+msgstr "TVL"

 #: apps/cowswap-frontend/src/modules/wallet/pure/StatusIcon/index.tsx
 msgid "WalletConnect"
-msgstr ""
+msgstr "WalletConnect"

 #: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/TransactionSlippageInput/index.tsx
 msgid "Auto"
-msgstr ""
+msgstr "Auto"

 #: apps/cowswap-frontend/src/modules/hooksStore/pure/HookDappDetails/index.tsx
 msgid "N/A"
-msgstr ""
+msgstr "N/D"

 #: apps/cowswap-frontend/src/common/pure/NetworkCostsSuffix/index.tsx
 #: apps/cowswap-frontend/src/modules/trade/pure/RowFeeContent/index.tsx
 msgid "gas"
-msgstr ""
+msgstr "gas"

 #: apps/cowswap-frontend/src/common/pure/CoWAmmBannerContent/index.tsx
 msgid "pool"
-msgstr ""
+msgstr "pool"

 #: apps/cowswap-frontend/src/legacy/components/Tokens/TokensTableRow.tsx
 #: apps/cowswap-frontend/src/modules/swap/containers/SwapConfirmModal/index.tsx
 msgid "token"
-msgstr ""
+msgstr "token"

 #: apps/cowswap-frontend/src/legacy/components/Tokens/TokensTable.tsx
 msgid "Token"
-msgstr ""
+msgstr "Token"

Also applies to: 1635-1638, 1756-1758, 2829-2831, 4311-4315, 2713-2716, 6161-6163, 294-298, 3074-3077


715-719: Core navigation/feature labels must not be empty.

Brands/acronyms pass‑through; translate stable terms.

 #: apps/cowswap-frontend/src/common/containers/OrderHooksDetails/index.tsx
 msgid "Pre Hooks"
-msgstr ""
+msgstr "Pre Hooks"

 #: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
 msgid "Tokens"
-msgstr ""
+msgstr "Tokens"

 #: apps/cowswap-frontend/src/common/containers/CoWAmmBanner/index.tsx
 #: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
 msgid "CoW AMM"
-msgstr ""
+msgstr "CoW AMM"

 #: apps/cowswap-frontend/src/common/containers/OrderHooksDetails/index.tsx
 msgid "POST"
-msgstr ""
+msgstr "POST"

 #: apps/cowswap-frontend/src/common/containers/OrderHooksDetails/index.tsx
 msgid "PRE"
-msgstr ""
+msgstr "PRE"

 #: libs/common-const/src/common.ts
 #: apps/cowswap-frontend/src/common/constants/routes.ts
 #: apps/cowswap-frontend/src/modules/advancedOrders/containers/AdvancedOrdersWidget/index.tsx
 msgid "TWAP"
-msgstr ""
+msgstr "TWAP"

 #: apps/cowswap-frontend/src/common/constants/routes.ts
 #: apps/cowswap-frontend/src/utils/orderUtils/getUiOrderType.ts
 msgid "Yield"
-msgstr ""
+msgstr "Rendimiento"

 #: libs/hook-dapp-lib/src/hookDappsRegistry.ts
 msgid "Pre"
-msgstr ""
+msgstr "Pre"

 #: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
 msgid "FAQs"
-msgstr ""
+msgstr "Preguntas frecuentes"

 #: apps/cowswap-frontend/src/modules/application/containers/App/menuConsts.tsx
 msgid "Legal"
-msgstr ""
+msgstr "Legal"

Also applies to: 814-819, 1261-1265, 1274-1277, 3882-3885, 2464-2470, 3329-3335, 2060-2065, 3784-3787, 5734-5736


1318-1320: Brand names should not be empty.

Preserve brand/product names.

 #: libs/hook-dapp-lib/src/hookDappsRegistry.ts
 msgid "Bungee"
-msgstr ""
+msgstr "Bungee"

 #: libs/hook-dapp-lib/src/hookDappsRegistry.ts
 msgid "Aave Collateral Swap Flashloan"
-msgstr ""
+msgstr "Aave Collateral Swap Flashloan"

Also applies to: 5015-5017

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 13833f0 and 65e1fd6.

📒 Files selected for processing (1)
  • apps/cowswap-frontend/src/locales/es-ES.po (33 hunks)
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-07-24T16:42:53.154Z
Learnt from: cowdan
Repo: cowprotocol/cowswap PR: 6009
File: apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx:23-33
Timestamp: 2025-07-24T16:42:53.154Z
Learning: In apps/cowswap-frontend/src/modules/tradeWidgetAddons/containers/HighFeeWarning/HighFeeWarningTooltipContent.tsx, the use of toFixed(2) for percentage formatting in tooltip content is intentional and differs from the banner message formatting that uses toSignificant(2, undefined, Rounding.ROUND_DOWN). This formatting difference serves different UX purposes and should not be flagged as inconsistent.

Applied to files:

  • apps/cowswap-frontend/src/locales/es-ES.po
📚 Learning: 2025-10-10T20:28:16.565Z
Learnt from: fairlighteth
Repo: cowprotocol/cowswap PR: 6347
File: apps/cowswap-frontend/src/modules/trade/pure/TradeConfirmation/index.tsx:49-49
Timestamp: 2025-10-10T20:28:16.565Z
Learning: In apps/cowswap-frontend/src/modules/trade, TradeConfirmation follows a two-layer architecture: TradeConfirmationView (pure/stateless) in pure/TradeConfirmation/index.tsx renders the UI, while TradeConfirmation (container) in containers/TradeConfirmation/index.tsx wraps it to freeze props during pending trades (via useStableTradeConfirmationProps), wire in signing state (useSigningStep), and inject trade confirmation state (useTradeConfirmState). Consuming modules should import the container TradeConfirmation from 'modules/trade' to preserve this stateful behavior.
<!-- [add_learning]
When reviewing component refactoring in apps/cowswap-frontend/src/modules/trade, recognize the pattern where a pure view component (e.g., TradeConfirmationView) is separated from a stateful container (e.g., TradeConfirmation) that wraps it. The container adds runtime state management (prop stabilization, signing state, etc.) while the view remains testable and composable. Do not flag usages that import th...

Applied to files:

  • apps/cowswap-frontend/src/locales/es-ES.po
📚 Learning: 2025-10-13T19:41:31.440Z
Learnt from: limitofzero
Repo: cowprotocol/cowswap PR: 6351
File: apps/cowswap-frontend/src/modules/erc20Approve/containers/TradeApproveModal/useTradeApproveCallback.ts:87-121
Timestamp: 2025-10-13T19:41:31.440Z
Learning: In apps/cowswap-frontend/src/modules/erc20Approve, useApproveCallback returns Promise<TransactionResponse | undefined> and is distinct from useApproveCurrency, which can return Promise<TransactionReceipt | SafeMultisigTransactionResponse>. When reviewing approval flows, verify which hook is actually being used before flagging Safe wallet concerns.

Applied to files:

  • apps/cowswap-frontend/src/locales/es-ES.po
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Setup
  • GitHub Check: Cypress
🔇 Additional comments (2)
apps/cowswap-frontend/src/locales/es-ES.po (2)

9-19: Metadata/header update looks good.

Project/file IDs and revision date updated correctly.


9-19: Lock untranslated critical keys in Crowdin glossary as "Do not translate."

Verification found 36 empty msgstr entries in es-ES.po, including critical terms: APR, TVL, WalletConnect, CoW AMM, POST, "Got it", "token", "Pre Hooks", "Enable order alerts", and time units (s, d). Add these to the Crowdin glossary with "Do not translate" setting to prevent future emptying during translations.

Comment on lines +908 to +911
#: apps/cowswap-frontend/src/modules/notifications/pure/NotificationSettingsPopover.tsx
msgid "Got it"
msgstr ""

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

New notifications copy added with empty translations.

Provide Spanish to avoid blank popovers/buttons.

 #: apps/cowswap-frontend/src/modules/notifications/pure/NotificationSettingsPopover.tsx
 msgid "Got it"
-msgstr ""
+msgstr "Entendido"

 #: apps/cowswap-frontend/src/legacy/components/Header/AccountElement/NotificationAlertPopover.tsx
 msgid "Enable order alerts"
-msgstr ""
+msgstr "Habilitar alertas de órdenes"

 #: apps/cowswap-frontend/src/legacy/components/Header/AccountElement/NotificationAlertPopover.tsx
 msgid "Enable trade alerts"
-msgstr ""
+msgstr "Habilitar alertas de operaciones"

 #: apps/cowswap-frontend/src/legacy/components/Header/AccountElement/NotificationAlertPopover.tsx
 msgid "Not now"
-msgstr ""
+msgstr "Ahora no"

 #: apps/cowswap-frontend/src/modules/notifications/pure/NotificationSettingsPopover.tsx
 msgid "Trade alerts enabled"
-msgstr ""
+msgstr "Alertas de operaciones habilitadas"

 #: apps/cowswap-frontend/src/modules/notifications/pure/NotificationSettingsPopover.tsx
 msgid "Trade alert settings info"
-msgstr ""
+msgstr "Información sobre la configuración de alertas de operaciones"

 #: apps/cowswap-frontend/src/modules/notifications/pure/NotificationSettingsPopover.tsx
 msgid "Change trade alert settings here"
-msgstr ""
+msgstr "Cambia la configuración de alertas de operaciones aquí"

 #: apps/cowswap-frontend/src/legacy/components/Header/AccountElement/NotificationAlertPopover.tsx
 msgid "Get trade alerts"
-msgstr ""
+msgstr "Recibir alertas de operaciones"

Also applies to: 1699-1702, 2130-2133, 2642-2645, 2704-2707, 3411-3414, 3425-3428, 5010-5013

Comment on lines 2996 to 2999
#: apps/cowswap-frontend/src/legacy/hooks/useWrapCallback.ts
msgid "Error"
msgstr "Error"
msgstr ""

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Minor: generic error label empty.

Fill to avoid blank error headings/toasts.

 #: apps/cowswap-frontend/src/common/pure/TransactionErrorContent/index.tsx
 #: apps/cowswap-frontend/src/legacy/hooks/useWrapCallback.ts
 #: apps/cowswap-frontend/src/legacy/hooks/useWrapCallback.ts
 msgid "Error"
-msgstr ""
+msgstr "Error"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
#: apps/cowswap-frontend/src/legacy/hooks/useWrapCallback.ts
msgid "Error"
msgstr "Error"
msgstr ""
#: apps/cowswap-frontend/src/common/pure/TransactionErrorContent/index.tsx
#: apps/cowswap-frontend/src/legacy/hooks/useWrapCallback.ts
#: apps/cowswap-frontend/src/legacy/hooks/useWrapCallback.ts
msgid "Error"
msgstr "Error"
🤖 Prompt for AI Agents
In apps/cowswap-frontend/src/locales/es-ES.po around lines 2996-2999 the
translation for msgid "Error" is empty which causes blank error headings/toasts;
open the file and replace the empty msgstr with the Spanish translation (e.g.
msgstr "Error"), save the file and recompile or reload the i18n resources so the
non-empty label is used at runtime.

@alfetopito alfetopito deleted the i18n_develop branch November 14, 2025 16:44
@github-actions github-actions bot locked and limited conversation to collaborators Nov 14, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants